package com.domain.DTO;

import java.time.Duration;
import java.time.LocalDateTime;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author 大忽悠
 */
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class FlightDto {
    //航班信息

    /**
     * 航班id
     */
    private Integer flightId;

    /**
     * 航空公司名
     */
    private String companyName;

    /**
     * 机型
     */
    private String planeType;

    /**
     * 出发城市
     */
    private String departureCity;

    /**
     * 到达城市
     */
    private String arriveCity;

    //班次信息

    /**
     * 航班班次Id
     */
    private Integer flightClassId;

    /**
     * 起飞时间
     */
    @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
    private LocalDateTime departureTime;

    /**
     * 起飞机场
     */
    private String departureAirport;

    /**
     * 到达时间
     */
    @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
    private LocalDateTime arrivalTime;

    /**
     * 到达机场
     */
    private String arriveAirport;

    /**
     * 商务舱剩余座位
     */
    private Integer richLeftNumber;

    /**
     * 经济舱剩余座位
     */
    private Integer poorLeftNumber;

    /**
     * 商务舱价格
     */
    private Double richPrice;

    /**
     * 经济舱价格
     */
    private Double poorPrice;

    /**
     * 座位信息
     */
    private String seatInfo;

    //转机

    /**
     * next为null,说明到头了
     * <br>考虑到同一个航班一天可能有多个班次,因此这里用list
     */
    private List<FlightDto> next;

    public Long getTimeCost() {
      return Duration.between(departureTime,arrivalTime).toMinutes();
    }
}
